/*
 * capadireccionamiento.h
 *
 *  Created on: 19/11/2011
 *      Author: utn_so
 */

#ifndef CAPADIRECCIONAMIENTO_H_
#define CAPADIRECCIONAMIENTO_H_

#include "../libreriasExternas.h"
#include "../estructuras.h"

t_sector * pedirSector(int32_t nSector);
t_sector * pedirBootSector(void);
t_cluster * pedirCluster(int32_t nCluster);
t_bloque * pedirBloqueDeCluster(t_cluster cluster);
t_bloque * pedirBloquesDeCluster(t_cluster * cluster);


int32_t pedirClusterArmado(t_cluster * clusterArmado);
int32_t pedirBloqueArmado(t_bloque * bloqueAPedir);
int32_t pedirSectorArmado(t_sector * sectorAPedir);


t_cluster * armarCluster(int32_t nCluster);
t_list * armarBloquesDeCluster(t_cluster* clusterArmado);
t_list * armarSectoresDeBloque(t_bloque * bloqueArmado);

void freeSector(t_sector * sector);
void freeBloque(t_bloque * bloque);
void freeCluster(t_cluster * cluster);

int32_t escribirCluster(t_cluster * clusterAEscribir);

int32_t escribirBloque(t_bloque * bloqueAEscribir);

int32_t escribirSector(t_sector * sectorAEscribir);

int32_t cacheActivada(void);

int32_t bytesPerCluster(void);

int32_t cacheActivada(void);


char *leerBloque(int32_t nBloque);
char *leerBloqueRed(int32_t nBloque);

char* leerSector(int32_t nSector);
void escribirBloque_v2(uint32_t nBloque, char * dataBloque);
void escribirSector_v2(uint32_t nSector,char *dataSector);

#endif /* CAPADIRECCIONAMIENTO_H_ */
